<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require_once BASEPATH."libraries/vendor/getui/IGt.Push.php";
require_once BASEPATH."libraries/vendor/getui/igetui/IGt.AppMessage.php";
require_once BASEPATH."libraries/vendor/getui/igetui/IGt.APNPayload.php";
require_once BASEPATH."libraries/vendor/getui/igetui/template/IGt.BaseTemplate.php";
require_once BASEPATH."libraries/vendor/getui/IGt.Batch.php";
require_once BASEPATH."libraries/vendor/getui/igetui/utils/AppConditions.php";


define('APPKEY','FwK0mjzD4z9CsoE3P2di12');
define('APPID','4X04wxK09H6rxC6rpBEfL1');
define('MASTERSECRET','cVt9ZABI1e58UcdezrJBU2');

//define('APPKEY','t2srhy8HRPAoumaPuIbvQ9');
//define('APPID','HpbJdTCJ508cx5QsoOBmH');
//define('MASTERSECRET','awFr3vbxBR8lFqS1CKmem2');

define('HOST','http://sdk.open.api.igexin.com/apiex.htm');

/**
 * 自定义-个推类(弹溜溜app)
 */
class My_getui{
    private $IC;
    
    function __construct() {}
    /**
     * 单个推送消息，不区分IOS和Android
     * @param interger $usersAlias 别名，这里指的是加密后的user_id
     * @param array $content 相关数据
     */
    function pushMessageToSingle($usersAlias,$content){
        $igt = new IGeTui(HOST, APPKEY, MASTERSECRET);
        //消息模版：
        // 1.TransmissionTemplate:透传功能模板
        // 2.LinkTemplate:通知打开链接功能模板
        // 3.NotificationTemplate：通知透传功能模板
        // 4.NotyPopLoadTemplate：通知弹框下载功能模板

        $template = $this->IGtTransmissionTemplateDemo($content);
        //$template = IGtLinkTemplateDemo();
        //$template = IGtNotificationTemplateDemo();
        // $template = IGtTransmissionTemplateDemo();

        //个推信息体
        $message = new \IGtSingleMessage();
        $message->set_isOffline(true);//是否离线
        $message->set_offlineExpireTime(3600*12*1000);//离线时间
        $message->set_data($template);//设置推送消息类型
        //$message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息，1为wifi推送，0为不限制推送
        //接收方
        $target = new \IGtTarget();
        $target->set_appId(APPID);
        $target->set_alias($usersAlias);
        try {
                $rep = $igt->pushMessageToSingle($message, $target);
        }catch(RequestException $e){
                $requstId =e.getRequestId();
                $rep = $igt->pushMessageToSingle($message, $target, $requstId);
        }
        return $rep;
    }
    
    /**
     * 推送给所有用户，不区分IOS和Android
     * @param array $content 相关数据
     */
    function pushMessageToApp($content){
        $igt = new IGeTui(HOST, APPKEY, MASTERSECRET);
        //消息模版：
        // 1.TransmissionTemplate:透传功能模板
        // 2.LinkTemplate:通知打开链接功能模板
        // 3.NotificationTemplate：通知透传功能模板
        // 4.NotyPopLoadTemplate：通知弹框下载功能模板

        $template = $this->IGtTransmissionTemplateDemo($content);
        //$template = IGtLinkTemplateDemo();
        //$template = IGtNotificationTemplateDemo();
        // $template = IGtTransmissionTemplateDemo();
        $message = new IGtAppMessage();
        $message->set_isOffline(true);
        $message->set_offlineExpireTime(3600*12*1000);//离线时间单位为毫秒，例，两个小时离线为3600*1000*2
        $message->set_data($template);
        
        $appIdList=array(APPID);
        $phoneTypeList=array('ANDROID','IOS');

        $cdt = new AppConditions();
        $cdt->addCondition(AppConditions::PHONE_TYPE, $phoneTypeList);
        $message->set_appIdList($appIdList);
        $message->set_conditions($cdt);
        $rep = $igt->pushMessageToApp($message);
        return $rep;
    }
    /**
     * 多个推送消息，不区分IOS和Android
     * @param array $usersAliasList 别名数组，这里指的是加密后的user_id
     * @param array $content 相关数据
     */
    function pushMessageToList($usersAliasList = array(),$content){
        putenv("gexin_pushList_needDetails=true");
        $igt = new IGeTui(HOST, APPKEY, MASTERSECRET);
        $batch = new IGtBatch(APPKEY, $igt);
        $batch->setApiUrl(HOST);
        
         //消息模版：
        // 1.TransmissionTemplate:透传功能模板
        // 2.LinkTemplate:通知打开链接功能模板
        // 3.NotificationTemplate：通知透传功能模板
        // 4.NotyPopLoadTemplate：通知弹框下载功能模板
        $template = $this->IGtTransmissionTemplateDemo($content);
        //$template = IGtLinkTemplateDemo();
        //$template = IGtNotificationTemplateDemo();
        // $template = IGtTransmissionTemplateDemo();
        
        //定义"ListMessage"信息体
        $message = new IGtListMessage();
        $message->set_isOffline(true);//是否离线
        $message->set_offlineExpireTime(3600*12*1000);//离线时间
        $message->set_data($template);//设置推送消息类型
        $message->set_PushNetWorkType(1);//设置是否根据WIFI推送消息，1为wifi推送，0为不限制推送
        $contentId = $igt->getContentId($message);
        $targetList = array();
        //接收方  
        foreach ($usersAliasList as $key =>$usersAlias) {
            $target = new IGtTarget();
            $target->set_appId(APPID);
            $target->set_alias($usersAlias);
            $targetList[$key] = $target;
            unset($target);
        }
        $rep = $igt->pushMessageToList($contentId, $targetList);
        return $rep;
    }
    
    //透传消息模板
    protected function IGtTransmissionTemplateDemo($content){

        $content1 = $content['content'];
        $type = array(
            "type" => $content['type'],//消息类型
            "message_id" => $content['message_id']//消息id
        );
        $template =  new \IGtTransmissionTemplate();
        //应用appid
        $template->set_appId(APPID);
        //应用appkey
        $template->set_appkey(APPKEY);
        //透传消息类型
        $template->set_transmissionType(2);
        //透传内容
        $template->set_transmissionContent(json_encode($content));//Android
        $template->set_pushInfo("","badge",$content1,"sound",$type,$content1,"locArgs","launchImage");//苹果
        /*iOS 推送需要对该字段进行设置具体参数详见iOS模板说明(PHP)*/
        return $template;
    }
}
